//---------------------------------------------------------------------------

#ifndef CaleidoscopioH
#define CaleidoscopioH
#include "Lista.h"
#include "DL.h"
#include "DLC.h"
#include "pv.h"
#include <fstream.h>
//---------------------------------------------------------------------------
class Caleidoscopio{
            private:
                DL * contexto;
                Lista <DLC> * patrones;
                GLfloat radioContexto,
                        ladoContexto;
                GLint   nladosContexto;
                PV *    centroContexto;

            public:
                Caleidoscopio(){contexto = new DL();
                                patrones = new Lista<DLC>();
                                centroContexto = new PV();};
                Caleidoscopio(PV* c,DL * contexto);
                ~Caleidoscopio(){delete contexto;
                                 delete patrones;
                                 delete centroContexto;};

                //setters getters metralla
                inline void setContexto(DL * c){contexto = c;};
                inline DL* getContexto(){return contexto;};
                inline void setPatrones(Lista<DLC> * p){patrones = p;};
                inline Lista<DLC>* getPatrones(){return patrones;};
                inline void setRadioContexto(GLfloat  p){radioContexto = p;};
                inline GLfloat getRadioContexto(){return radioContexto;};
                inline void setLadoContexto(GLfloat  p){ladoContexto = p;};
                inline GLfloat getLadoContexto(){return ladoContexto;};
                inline void setNLadosContexto(GLint p){nladosContexto = p;};
                inline GLfloat getNLadosContexto(){return nladosContexto;};
                inline void setCentoContexto(PV * c){centroContexto = c;};
                inline PV* getCentroContexto(){return centroContexto;};
                bool igual(Caleidoscopio * c);
                void anadePatron(DLC * c);
                void eliminaPatron(DLC * c);
                Caleidoscopio * copiar();
                void mover(PV * p);
                bool dentro(PV * p);
                void creaPatron();
                void giraPatron();
                void giraTodo();

                void draw();
                bool guarda(ofstream & Archivo);
                bool abre(ifstream & Archivo);
                bool recortar(PV * p1,PV * p2);




};




#endif
 